//校验姓名
function checkName (rule, value, callback){
    if (value == "") {
        callback(new Error("请输入姓名"))
    } else if (value.length > 12) {
        callback(new Error("账号长度应是1-12"))
    } else {
        callback()
    }
}
//校验账号
function checkUserName (rule, value, callback){
    if (value == "") {
        callback(new Error("请输入账号"))
    } else if (value.length > 20 || value.length <3) {
        callback(new Error("账号长度应是3-20"))
    } else {
        callback()
    }
}
function isCellPhone (val) {
    if (!/^1(3|4|5|6|7|8)\d{9}$/.test(val)) {
        return false
    } else {
        return true
    }
}
//效验手机号
function checkPhone (rule, value, callback){
    // let phoneReg = /(^1[3|4|5|6|7|8|9]\d{9}$)|(^09\d{8}$)/;
    if (value == "") {
        callback(new Error("请输入手机号"))
    } else if (!isCellPhone(value)) {//引入methods中封装的检查手机格式的方法
        callback(new Error("请输入正确的手机号!"))
    } else {
        callback()
    }
}
//效验身份证件
function checkIdNumber (rule,value,callback) {
    // 身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X
    let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
    if(value == '') {
        callback(new Error('请输入身份证号码'))
    } else if (reg.test(value)) {
        callback()
    } else {
        callback(new Error('身份证号码不正确'))
    }
}

Vue.config.productionTip=false  //以阻止 vue 在启动时生成生产提示。 <!-- 全局配置 -->
new Vue({
    el: '#member-app',
    data:{
        //当前登录的用户信息
        user:{
            name: 'admin',

        },
        //查看员工信息
        input: '',     //搜索内容
        total: 0,            //总条目数
        currentPage: 1,             //当前显示页数
        pageSize: 10,        //每页所支持的最大条数
        pages : 1,           //总页数
        tableData : [        //表单内容

        ],
        //添加员工
        dialogAddFormVisible: false,   //是否弹出的添加窗口
        elAdd:{
            name: '',
            sex: 1,
            age: null,
            address: '',
            phone: '',
            idNumber: ''
        },
        //修改员工
        dialogUpdateVisible: false,   //是否弹出的修改窗口
        elUpdate:{
            id: null,
            name: '',
            sex: 1,
            age: null,
            address: '',
            phone: '',
            idNumber: ''
        },
        //修该和添加规则
        rules:{
            name: [{ required: true, 'validator': checkName, 'trigger': 'blur' }],  //blur失去焦点
            username: [{ required: true, 'validator': checkUserName, 'trigger': 'blur' }],
            sex: [
                { required: true, message: '性别必填项', trigger: 'blur' },
                { required: true, pattern:/^男$|^女$/,message: '请输入正确的性别', trigger: 'blur' }
            ],
            age: [{ required: true,pattern:/^\d{1,3}$/, message: '请输入正确的年龄', trigger: 'blur' }],
            address: [{ required: true, message: '地址必填项', trigger: 'blur' }],
            phone: [{ 'required': true, 'validator': checkPhone, 'trigger': 'blur' }],
            idNumber: [{ 'required': true, 'validator': checkIdNumber, 'trigger': 'blur' }]
        },
    },
    created(){
        this.init();
    },
    methods:{
        //加载列表数据
        init(){
            axios({
                methods: "get",
                url: "/employee/page",
                params:{
                    name: this.input,
                    currentPage:this.currentPage,
                    pageSize: this.pageSize,
                }
            }).then((res)=>{
                if(res.data.code==1){
                    this.tableData=res.data.data.records;
                    this.total=parseInt(res.data.data.total);      //总条目数
                    this.pageSize=parseInt(res.data.data.size);    //每页所支持的最大条数
                    this.pages=parseInt(res.data.data.pages);      //总页数
                }else{
                    this.$message.error(res.data.msg);

                }
            });
        },
        //启用或者禁用
        statusHandle(row){
            this.$confirm("确定修改员工状态，是否继续？","提示",{
                confirmButtonText:"确定",
                cancelButtonText:"取消",
                type: "warning"
            }).then(()=> {   //选择确定的情况
                axios({
                    method: "POST",
                    url: "/employee/setStatus",
                    data:row
                }).then((res)=>{
                    if(res.data.code==0){
                        this.$message.error(res.data.msg);
                    }else{
                        this.$message.success({
                            message: res.data.msg,
                            type: 'success'
                        });
                    }
                }).finally(()=>{
                    this.init();
                });
            }).catch(()=>{   //选择取消的情况
                this.$message({
                    type:"into",
                    message:"已取消"
                });
            });
        },
        //每页显示的条目数改变时会触发
        handleSizeChange(val){
            this.pageSize = val;
            this.init()
        },
        //当前页改变时会触发
        handleCurrentChange(val){
            this.currentPage = val;
            this.init()
        },
        //显示添加页面
        showAdd(){
            this.dialogAddFormVisible=true;
        },
        //提交添加信息
        handleAdd(){
            this.$refs.elAdd.validate((valid) => {
                if (valid) {
                    this.$confirm("确定添加，是否继续？","提示",{
                        confirmButtonText:"确定",
                        cancelButtonText:"取消",
                        type: "warning"
                    }).then(()=> {   //选择确定的情况
                        axios({
                            method: "POST",
                            url: "/employee/save",
                            data:this.elAdd
                        }).then((res)=>{
                            if(res.data.code==0){
                                this.$message.error(res.data.msg);
                            }else{
                                this.$message.success({
                                    message: res.data.msg,
                                    type: 'success'
                                });
                                this.$refs.elAdd.resetFields();      //清空表单
                            }
                        }).finally(()=>{
                            this.init();
                        });
                    }).catch(()=>{   //选择取消的情况
                        this.$message({
                            type:"into",
                            message:"已取消"
                        });
                    }).finally(()=>{
                        this.dialogAddFormVisible=false;
                    });
                } else {
                    this.$message.error('此提交不符合规则');
                    return false;
                }
            });
        },
        //显示修改页面
        showUpdate(id){
            axios({
                method: "get",
                url: "/employee/gainByID/"+id,
            }).then((res)=>{
                if(res.data.code==0){
                    this.$message.error(res.data.msg);
                }else{
                    console.log(res.data.data);
                    this.elUpdate.id=res.data.data.id;
                    this.elUpdate.name=res.data.data.name;
                    this.elUpdate.username=res.data.data.username;
                    this.elUpdate.sex=res.data.data.sex;
                    this.elUpdate.age=res.data.data.age;
                    this.elUpdate.address=res.data.data.address;
                    this.elUpdate.phone=res.data.data.phone;
                    this.elUpdate.idNumber=res.data.data.idNumber;
                    this.dialogUpdateVisible=true;
                }
            });
        },
        //提交修改信息
        handleUpdate(){
            this.$refs.elAdd.validate((valid) => {
                if (valid) {
                    this.$confirm("确定修改，是否继续？","提示",{
                        confirmButtonText:"确定",
                        cancelButtonText:"取消",
                        type: "warning"
                    }).then(()=> {   //选择确定的情况
                        axios({
                            method: "PUT",
                            url: "/employee/update",
                            data:this.elUpdate
                        }).then((res)=>{
                            if(res.data.code==0){
                                this.$message.error(res.data.msg);
                            }else{
                                this.$message.success({
                                    message: res.data.msg,
                                    type: 'success'
                                });
                                this.$refs.elAdd.resetFields();      //清空表单
                            }
                        }).finally(()=>{
                            this.init();
                        });
                    }).catch(()=>{   //选择取消的情况
                        this.$message({
                            type:"into",
                            message:"已取消"
                        });
                    }).finally(()=>{
                        this.dialogUpdateVisible=false;
                    });
                } else {
                    this.$message.error('此提交不符合规则');
                    return false;
                }
            });
        },
        //根据ID查询员工信息
        getByID(id){

        }
    }
})